第一堂課一開始先帶你認識機器學習在GCP平台上是如何運用的,它可以幫助我們解決哪些問題?就如同標題所寫,這節的重點在於機器學習在Google上的應用,將會協助你掌握像是BigQuery和Tensorflow等機器學習關鍵技術,讓使用者學會建立機器學習模型,應用在工作上或是推動你的公司轉型,機器學習在GCP上運作的流程大致上可以用這張圖表示:
1.了解機器學習如何在google上運作
2.學習用Tensorflow來試著建立你的機器學習模型
3.進行機器學習的特徵工程
4.以分佈式的方式端到端建立機器學習模型
5.機器學習的應用技巧,運用在處理圖像或文本、序列模型或是分類模型,甚至是建立個性化推薦系統等
一開始建立模型時效果比較不好,在這當中還會做特徵工程、調參數提高模型準確率。
而為什麼是運用Tensorflow建立機器學習模型我想大家應該都知道Tensorflow是Google大腦團隊開發的,許多Google的應用程式都有用到它,那Tensorflow跟我們平常聽到的keras和pytorch有什麼區別?我該用哪一種?我們來比較一下。
Tensorflow使用開源的方式讓大家都能使用,加速整個深度學習的發展,Tensorflow可以使用在CPU、GPU、TPU上面,Tensorflow是利用資料流程圖來表達數值運算的開放式原始碼函式庫,可以拆分成Tensor與Flow兩種來解釋:
運作方式是先建立運算圖再進行運算。
import tensorflow as tf
hello = tf.constant('Hello World')
sess = tf.Session()
sess.run(hello)
import tensorflow as tf
c = tf.constant([[1.0, 2.0], [3.0, 4.0]])
d = tf.constant([[1.0, 1.0], [0.0, 1.0]])
e = tf.matmul(c, d)
with tf.Session() as sess:
result = sess.run(e)
print(result)
Keras也是和Tensorflow在同一年出現,它可以接合Tensorflow或Theano等等深度學習框架後端,簡單直觀易上手的特性深受大眾喜愛,使用者很容易用幾行程式就能建立神經網路,相比Tensorflow來得簡單許多。
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
model.compile(optimizer='rmsprop',
loss='mse')
有人說Tensorflow太複雜, 一個神經網路模型需要大量代碼才能寫好,運算圖的邏輯複雜,需要花費許多力氣才能弄懂,Keras雖然容易使用但是想要自定義太難,那我選擇折衷方案Pytorch好了,Pytorch也是近年正在崛起的深度學習框架,提供使用者相對低層的環境,使用者可以自由的自定義層和查看入數值優化任務的底層,這樣比較彈性的做法讓難易度和程式的可讀性介於Tensorflow和Keras之間,而且也有大量的社群支援文檔和討論區。
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 32, 3)
self.conv2 = nn.Conv2d(32, 16, 3)
self.fc1 = nn.Linear(16 * 6 * 6, 10)
self.pool = nn.MaxPool2d(2, 2)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 6 * 6)
x = F.log_softmax(self.fc1(x), dim=-1)
return x
model = Net()
但這不代表說Tensorflow不好用,或是用Pytorch比較好,使用每一種框架都有它的優缺點,這就要端看使用者今天所要開發的項目是大型專案還是小應用,建議初學者可以先用Keras上手,等到建立模型和深度學習神經網路相關概念熟悉後再使用Tensorflow就比較容易上手。
這次的線上課程主要是用到Tensorflow建立機器學習模型,之後的課程也會慢慢介紹到它,那我們就拭目以待囉!